package com.singzi.leetcode.N100;

public class T0067 {
    public static void main(String[] args) {
        String a = "1010";
        String b = "1011";
        Solution0067 solution = new Solution0067();
        System.out.println(solution.addBinary(a, b));
    }


}
class Solution0067 {
    public String addBinary(String a, String b) {
        int m = a.length();
        int n = b.length();
        boolean is_carry = false;
        String str = "";
        while(m>0&&n>0){
            if((a.charAt(m-1)=='1'&&b.charAt(n-1)=='0'||a.charAt(m-1)=='0'&&b.charAt(n-1)=='1')&&is_carry==false){
                str="1"+str;
                is_carry = false;
            }
            else if((a.charAt(m-1)=='1'&&b.charAt(n-1)=='0'||a.charAt(m-1)=='0'&&b.charAt(n-1)=='1')&&is_carry==true){
                str="0"+str;
                is_carry = true;
            }
            else if(a.charAt(m-1)=='1'&&b.charAt(n-1)=='1'&&is_carry==false){
                str="0"+str;
                is_carry = true;
            }
            else if(a.charAt(m-1)=='1'&&b.charAt(n-1)=='1'&&is_carry==true){
                str="1"+str;
                is_carry = true;
            }
            else if(a.charAt(m-1)=='0'&&b.charAt(n-1)=='0'&&is_carry==false){
                str="0"+str;
                is_carry = false;
            }
            else if(a.charAt(m-1)=='0'&&b.charAt(n-1)=='0'&&is_carry==true){
                str="1"+str;
                is_carry = false;
            }
            m -=1;
            n -=1;
        }
        if(m>0){
            while(m>0){
                if(a.charAt(m-1)=='0'&&is_carry==true){
                    str="1"+str;
                    is_carry = false;
                }
                else if(a.charAt(m-1)=='1'&&is_carry==true){
                    str="0"+str;
                    is_carry = true;
                }
                else if(a.charAt(m-1)=='0'&&is_carry==false){
                    str="0"+str;
                    is_carry = false;
                }
                else if(a.charAt(m-1)=='1'&&is_carry==false){
                    str="1"+str;
                    is_carry = false;
                }
                m-=1;
            }

        }
        if(n>0){
            while(n>0){
                if(b.charAt(n-1)=='0'&&is_carry==true){
                    str="1"+str;
                    is_carry = false;
                }
                else if(b.charAt(n-1)=='1'&&is_carry==true){
                    str="0"+str;
                    is_carry = true;
                }
                else if(b.charAt(n-1)=='0'&&is_carry==false){
                    str="0"+str;
                    is_carry = false;
                }
                else if(b.charAt(n-1)=='1'&&is_carry==false){
                    str="1"+str;
                    is_carry = false;
                }
                n-=1;
            }

        }
        if (is_carry) str="1"+str;
        return str;





    }
}